﻿#ifndef SQLDATABASE_H
#define SQLDATABASE_H

#include <QSqlError>
#include <QDebug>
#include <QFile>
#include <QSqlQuery>
#include <QSqlDatabase>
#include <QObject>

class DataOperate;
class DBTableManager;
class SqlDatabase : public QObject
{
    Q_OBJECT
public:
    SqlDatabase(QObject *parent = nullptr);
    ~SqlDatabase();
    bool InitDataBase(const QString &host, const int &port, const QString &user, const QString &pass, const QString &DBName);
    bool CreateSqlDataBase(const QString& createSqlPath);
    bool InitDBTables();
    //数据库断开
    bool DisDatabaseConnect();

    //数据库备份
    bool SqlBackup(const QString& path);
    //数据库还原
    bool SqlReduction(const QString &path);

    bool isValid();

    bool DataBaseOperate(DataOperate &DataOpera);

private:
    //数据库创建    return 成功：true，失败：false
    bool IsUpdate(void);
    //数据库升级
    bool UpataSqlDatabase(const QString& upateSqlPath);

private:
    QSqlDatabase            m_QDataBase;
    DBTableManager          *m_DBTableManager;
};

#endif // SQLDATABASE_H
